// mixins/authMixin.js
// 认证混入 - 用于页面级别的登录状态检查

import { checkToken, needAuth, getCurrentPathFromUrl } from '@/utils/router.js'

export default {
  onLoad(options) {
    // 检查当前页面是否需要登录
    this.checkPageAuth()
  },
  
  onShow() {
    // 页面显示时再次检查登录状态
    this.checkPageAuth()
  },
  
  methods: {
    // 检查页面认证状态
    checkPageAuth() {
      const pages = getCurrentPages()
      let currentPath = null
      
      if (pages.length === 0) {
        // 如果页面栈为空，尝试从URL获取路径
        currentPath = getCurrentPathFromUrl()
        if (!currentPath) {
          // 如果无法获取路径，延迟检查
          setTimeout(() => {
            this.checkPageAuth()
          }, 100)
          return
        }
      } else {
        const currentPage = pages[pages.length - 1]
        currentPath = '/' + currentPage.route
      }
      
      console.log('页面认证检查 - 当前路径:', currentPath)
      
      // 如果页面需要认证但没有token，跳转到登录页
      if (needAuth(currentPath) && !checkToken()) {
        console.log('页面需要登录但无token，跳转到登录页')
        uni.showToast({
          title: '请先登录',
          icon: 'none',
          duration: 2000
        })
        
        setTimeout(() => {
          uni.reLaunch({
            url: '/pages/login/login'
          })
        }, 1000)
      }
    },
    
    // 检查token是否存在
    hasToken() {
      return checkToken()
    },
    
    // 跳转到登录页
    goToLogin() {
      uni.reLaunch({
        url: '/pages/login/login'
      })
    }
  }
} 